﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinergija13.DataModel.Models.Conf;
using Sinergija13.DataModel.Dto.Conf;
using Sinergija13.DataServices.Tasks;

namespace Sinergija13.DataServices.Store.Conf
{
    public interface IConfDataStore
    {
        int Version { get; }

        IEnumerable<Session> GetSessionsByDayIndexAndTrack(int index, string track);
        IEnumerable<Session> GetSessionsByTrack(string track);
        IEnumerable<Session> GetSessionsByDay(int dayId);
        IEnumerable<Session> GetFavouriteSessions();
        IEnumerable<Session> GetNextSessions();
        IEnumerable<Speaker> GetSpeakers();
        IEnumerable<Track> GetTracks();
        IEnumerable<Event> GetEvents();
        IEnumerable<Day> GetDays();
        
        Speaker FindSpeaker(int id);
        Session FindSession(int id);
        Day FindDay(int id);
        Track FindTrack(int id);
        Room FindRoom(int id);
        Event FindEvent(int id);


        bool HasFavourites();
        void SaveFavouritesStore();

        IObservable<TaskCompletedSummary> CheckIfNewVersionIsAvailable();
        IObservable<TaskCompletedSummary> RefreshConfData();
        
        //bool SaveConfData(ConfDataModelDto confDataDto);      
    }
}
